/// Copyright 2007-8 Faraday Media
/// 
/// Licensed under the Apache License, Version 2.0 (the "License"); 
/// you may not use this file except in compliance with the License. 
/// You may obtain a copy of the License at 
/// 
///   http://www.apache.org/licenses/LICENSE-2.0 
/// 
/// Unless required by applicable law or agreed to in writing, software 
/// distributed under the License is distributed on an "AS IS" BASIS, 
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
/// See the License for the specific language governing permissions and 
/// limitations under the License.
namespace MetaSharp.XML {
  ///<summary>
  /// Interface that all auto-wrappers can implement in order to provide additional features.
  ///</summary>
  public interface IAutoWrapper {
    /// <summary>
    /// Requests that an implementation of the provided interface is returned for the current node.
    /// This provides the ability to access the node with custom properties, or to apply additional
    /// access methods.
    /// </summary>
    /// <typeparam name="T">the type of the interface that should be implemented</typeparam>
    /// <returns>the interface implemented as an autowrapper</returns>
    T As<T>() where T : class;
  }
}
